首页 > 试题广场 >

第一个只出现一次的字符

[编程题]第一个只出现一次的字符
  • 热度指数:561332 时间限制:C/C++ 1秒,其他语言2秒 空间限制:C/C++ 256M,其他语言512M
  • 算法知识视频讲解
在一个长为 字符串中找到第一个只出现一次的字符,并返回它的位置, 如果没有则返回 -1(需要区分大小写).(从0开始计数)


数据范围:,且字符串只有字母组成。
要求:空间复杂度 ,时间复杂度
示例1

输入

"google"

输出

4
示例2

输入

"aa"

输出

-1
解题步骤:
①map统计词频
②for循环遍历词频为1,返回
function FirstNotRepeatingChar(str) {
  // write code here
  let wordFreq = new Map();
//     for循环遍历 map存储词频
  for (let i = 0; i < str.length; i++) {
    if (!wordFreq.get(str[i])) {
      wordFreq.set(str[i], 1);
    } else {
      wordFreq.set(str[i], wordFreq.get(str[i]) + 1);
    }
  }
//     for循环从前往后遍历 找到词频为1的直接返回(首个)
  for (let i = 0; i < str.length; i++) {
    if (wordFreq.get(str[i]) === 1) return i;
  }
  return -1;
}
module.exports = {
  FirstNotRepeatingChar: FirstNotRepeatingChar,
};

发表于 2022-06-10 10:37:13 回复(0)
简洁的JavaScript:
function FirstNotRepeatingChar(str)
{
    // write code here
    let dict = {};
    for (let i = 0; i < str.length; i++){
        dict[str[i]] =  dict[str[i]] === undefined ? 1 : dict[str[i]] + 1;
    }
    
    for (let i = 0; i < str.length; i++){
        if (dict[str[i]] === 1) return i;
    }
    return -1;
}


发表于 2021-10-08 15:05:35 回复(0)
function FirstNotRepeatingChar(str)
{
    for(let i = 0 ;i < str.length; i++){
        if(str.indexOf(str[i]) === str.lastIndexOf(str[i])){
            return i;
        }
    }
    return -1;
}

发表于 2021-10-01 15:50:50 回复(1)

问题信息

难度:
3条回答 173531浏览

热门推荐

通过挑战的用户

查看代码